#ifndef MONSTER_H_INCLUDED
#define MONSTER_H_INCLUDED
#include <string>
#include <cstdlib> //for rand
#include <iostream>
using namespace std;

class Monster
{
    public:

    //constructor
    Monster();

    //copy constructor
    Monster(const Monster &other);

    //mutators: attributes (10 for each monster)
    void setName(string nm);
    void setLevel(int lv);
    void setPAttk(int PAttk);
    void setPDef(int PDef);
    void setMAttk(int MAttk);
    void setMDef(int MDef);
    void setExp(int exp);
    void setGold(int gold);
    void setHealth(int hlth);
    void setHealthMax(int hlth_max);
    void setMana(int mna);
    void setManaMax(int mna_max);
    void HealthToMax();
    void ManaToMax();
    void setAll(string nm = "unknown", int hlth = 1, int hlth_max = 1, int mna = 1, int mna_max = 1, int lv = 1, int PAttk = 1, int PDef = 1,
            int MAttk = 1, int MDef = 1, int exp = 1, int gold = 1);

    //action functions / accessors

    virtual int battleAction(int code);
    int attack();
    int defend();
    int Mattack();
    int Mdefend();
    int getLvl();
    int getExp();
    int getGold();
    int getHealth();
    int getMana();
    string getName();
    bool isDead();
    void displayStats();


    protected:

    int health, health_max, level, PowAttack, PowDef, MagAttack, MagDef, exper, gold_nuggets, mana, mana_max;
    string name;
};

#endif // MONSTER_H_INCLUDED
